#include "net_event.hh"
#include "event_based_object.hh"

namespace kratos {
namespace network {

Event::Event(std::uint32_t id, EventCategory category)
    : id_(id), category_(category) {
}

Event::~Event() {
}

std::uint32_t Event::getID() const {
    return id_;
}

EventCategory Event::getCategory() const {
    return category_;
}

EventTarget::EventTarget(std::uint32_t id, std::uint32_t target)
    : Event(id, EventCategory::Target), target_(target) {
}

EventTarget::EventTarget(std::uint32_t id, const EventBasedObject& object)
    : Event(id, EventCategory::Target), target_(object.getID()) {
}

EventTarget::EventTarget(std::uint32_t id, EventBasedObject* object)
    : Event(id, EventCategory::Target), target_(object->getID()) {
}

EventTarget::~EventTarget() {
}

std::uint32_t EventTarget::getTarget() const {
    return target_;
}

EventNoTarget::EventNoTarget(std::uint32_t id)
    : Event(id, EventCategory::NoTarget) {
}

EventNoTarget::~EventNoTarget() {
}

void EventNoTarget::doEvent() {
}

}
}
